<?php

namespace App\Http\Controllers\RBAC;

use App\Http\Controllers\admin\AdminPlatformController;
use App\Http\Model\Role;
use App\User;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;

/**
 * Class UserController 后台管理员控制器
 * @package App\Http\Controllers\RBAC
 */
class UserController extends AdminPlatformController
{
    /** 属性声明 */
    /** 方法声明 */
    /**
     * 添加管理员
     */
    public function user_add(){
        if(!$input = Input::except('_token')){
            /** 获取角色集合 */
            $role_list = Role::orderBy('sort_order','desc')->get();
            /** 加载视图 */
            return view('admin.rbac.user.userAdd',compact('role_list'));
        }
        /** 处理post提交数据 */
        /** 数据验证 */
        $rule = [
            'name' => 'required|unique:users',
            'role' => 'integer',
            'password' => 'required|confirmed'
        ];
        $message = [
            'name.required' => '管理员账号必填!',
            'role.integer' => '角色必选!',
            'password.required' => '密码必填!',
            'password.passworded' => '两次密码输入不同!'
        ];
        $validate = Validator::make($input,$rule,$message);
        if($validate -> fails()){
            return back() -> withErrors($validate);
        }
        /** 执行添加数据 */
        /** 整理数据 */
        $input['password'] = md5($input['password']);
        unset($input['password_confirmation']);
        User::insert($input);
        /** 跳转管理员列表 */
        return redirect('manager/rbac/user/user_list');
    }

    /**
     * 编辑管理员
     * @param int $uid 管理员主键id
     */
    public function user_edit($uid){
        if(!$input = Input::except('_token')){
            /** 获取管理员数据 */
            $user_info = User::find($uid);
            /** 获取所有角色数据 */
            $role_list = Role::get();
            return view('admin.rbac.user.userEdit',compact('user_info','role_list'));
        }
        /** 处理表单数据 */
        $input['password'] = md5($input['password']);
        if(User::where('uid',$uid)->update($input)){
            /** 返回管理员列表 */
            return redirect('manager/rbac/user/user_list');
        }
        return back();
    }

    /**
     * 管理员列表
     */
    public function user_list(){
        /** 获取所有管理员数据 */
        $user_list = User::
            leftJoin('role','users.role','=','role.role_id')
            -> select('users.*','role_name')
            -> get();
        return view('admin.rbac.user.userList',compact('user_list'));
    }

    /**
     * 删除管理员
     */
    public function user_del($uid){
        User::where('uid',$uid) -> delete();
        return redirect('manager/rbac/user/user_list');
    }
}
